home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best of Shareware
/
Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso
/
mac
/
DOS
/
UTILITY
/
MXMNU238
/
MARXREAD.ME
< prev
next >
Wrap
Text File
|
1992-03-01
|
14KB
|
481 lines
Version 2.35
12-02-91
Added software serialization and access codes. When MarxMenu is first
run it asks you for your serial number and access code. This unlocks
MarxMenu for your system.
UnBlank command has been expanded to allow you to set UnBlank to true
when you want to override MarxMenu's internal unblank logic. This allows
you to write external programs for MarxMenu to use as a screen blanker.
VarType (Variable) : String
VarType returns the type of data contained in a variable. Types returned
include the following:
NUL
NUMBER
REAL
STRING
ARRAY
FILE
POINTER
PROCEDURE
UNKNOWN
NovVolumeNumber (Directory) : Number
Returns the Novell volume number of a directory.
Example:
Writeln NovVolumeNumber ('F:')
NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
Returns a 2 dimensional array containing the name of the trustee paths
assigned to the object and the trustee access rights.
Example:
var X
NovScanTrusteePaths (X,'MARC',1)
Loop X
Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
EndLoop
12-16-91
ReadAscTextFile (FileName,2D Array)
ReadAscTextFile reads a standard comma delimited text file into a two
dimensional array. The lines of the file must be limited to 255
characters and the number of lines must be less than 13100. It also has
to fit in memory.
All text in quotes is converted to strings. Numbers not in quotes are
translated as numbers unless there is a '.' in which case they are
translated as floating point numbers.
12-19-91
Enhanced the Password command. The password is case sensitive if the
password in the source code is lower case. But if the password in the
source code is in uppercase then the password is not case sensitive.
Example:
Password 'CRITTER' 4 3 ;will accept critter or CRITTER
Password 'CriTTeR' 4 3 ;will only accept CriTTeR
12-30-91
Enhanced the way the inverse bar works. You can now have a window with
multiple colors and move the inverse bar over them and it restores the
original color.
HexString (Number, Length) : String
HexString converts a number into a base 16 hexadecimal string. If Length
> 0 then the number will have enough leading zeros to make it Length
long. If Length = 0 then leading zeros are removed. Length must be 8 or
less.
Example:
Writeln HexSt(253,4) ;returns 00FD
Writeln HexSt(253,0) ;returns FD
BinString (Number, Length) : String
BinString converts a number into a base 2 binary string. If Length > 0
then the number will have enough leading zeros to make it Length long.
If Length = 0 then leading zeros are removed. Length must be 32 or less.
Example:
Writeln HexSt(45,8) ;returns 00101101
Writeln HexSt(45,0) ;returns 101101
GetMem (Number) : Segment
GetMem allocates the amount of memory specified in Number and returns
the memory segment where the memory was allocated. The memory segment is
filled with 0s. The maximum size of the memory block is 65504 bytes.
You can then read and write to this memory area using the Mem commands.
Example:
var RamBlock
RamBlock = GetMem(2000) ;allocate 2000 bytes of memory
Mem(RamBlock,0) = 5 ;writes the number 5 to the first byte
FreeMem(Segment)
FreeMem deallocates memory that was allocated with GetMem. FreeMem
automatically knows how much memory to deallocate.
ReadFileBlock (Name,Offset,Size,Segment)
ReadFileBlock reads disk file Name starting at byte Offset for Size
bytes into memory buffer Segment. It is intended to read any kind of
file.
The maximum value for Size is 65504. The segment must be as large as the
number of bytes you are reading. The following example will copy a small
file.
Example:
Var RamBlock Size
Size = FileSize 'MARXREAD.ME'
RamBlock = GetMem(Size)
ReadFileBlock('MARXREAD.ME' 0 Size RamBlock)
WriteFileBlock('COPYREAD.ME' 0 Size RamBlock)
FreeMem(RamBlock)
WriteFileBlock (Name,Offset,Size,Segment)
WriteFileBlock writes disk file Name starting at byte Offset for Size
bytes from memory buffer Segment. It is intended to write any kind of
file. If the file doesn't exist, it is created.
The maximum value for Size is 65504. The segment must be as large as the
number of bytes you are writing.
Now, a feature you've all been waiting for. You can now make MsDos and
Interrupt calls directly from MarxMenu.
MsDos (Registers)
MsDos calls the interrupt 21h system call using values passed in an
array of 10 numbers. The array is set up using predefined Qualifiers
that represent the registers that are passed. These qualifiers are:
AX BX CX DX DI SI DS ES BP FL
Example: Get Current Drive
var Reg
Reg.AX = $1900
MsDos(Reg)
Writeln Char(LowWord(Reg.AX) + 1) ':' ;writes C:
Intr (Interrupt,Registers)
Intr works just like MsDos except that it lets you choose which
interrupt you want to call.
HighWord (Number) : Number
Returns the value of the upper 16 bits of a number.
LowWord (Number) : Number
Returns the value of the lower 16 bits of a number.
Segment (String) : Number
Returns the memory segment where string is located.
Offset (String) : Number
Returns the memory offset where string is located.
New Novell Goodies:
NovMyPrintQueues (Array)
Returns a list of all print queues that the user has access too.
NovTotalVolumeSpace (Path) : Number
Returns the total file space of the volume in bytes.
Example:
Writeln NovTotalVolumeSpace 'SYS:'
Writeln NovTotalVolumeSpace 'F:'
NovFreeVolumeSpace (Path) : Number
Returns the free file space of the volume in bytes.
Example:
Writeln NovFreeVolumeSpace 'SYS:'
Writeln NovFreeVolumeSpace 'F:'
NovTotalDirSlots (Path) : Number
Returns the total number of directory slots for this volume.
Example:
Writeln NovTotalDirSlots 'SYS:'
Writeln NovTotalDirSlots 'F:'
NovFreeDirSlots (Path) : Number
Returns the number of free directory slots for this volume.
Example:
Writeln NovFreeDirSlots 'SYS:'
Writeln NovFreeDirSlots 'F:'
===============================================================
Version 2.36
01-07-91
SplitPath (Array)
SplitPath reads the PATH environment variable and splits it up into and
array of strings that are directories the path is made up of. All
directory names are capitalized.
BuildPath (Array)
BuildPath sets the PATH environment variable to the driectories listed
in the Array variable. The first element in the array becomes the first
search path.
01-18-91
****** Good news for VINES users! ******
Banyan has sent me a free copy of Vines so I can add Vines goodies to
marxMenu. (Thanks to Dan Pettengell) And I have started to get it
working. I've set up the server and am running Vines and Netware on the
same workstation.
It may be because I'm just used to Novell but so far I have found
learning Vines somewhat awkward. Perhaps this means there is a market
for some serious utilities here. I welcome any feedback on the subject.
All Vines commands will start with the prefix Vin.
VinesLoaded : Boolean
VinesLoaded returns True if the Vines shell is loaded.
VinesInt : Number
Returns the interrupt number the Vines software is servicing.
VinUserName : String
Returns the StreetTalk name of the person who is logged in.
VinSerialNumber (Drive) : Number
Returns the Vines serial number on the server that the drive letter
referrences.
Example:
Writeln VinSerialNumber ('Z')
VinCheckService (Service) : Number
Returns information about the requested service.
Services:
1 - Communications
2 - Primary 3270 Emulation ID
3 - Async Terminal Emulation
4 - File Deflection
5 - BPS
6 - UnDocumented
7 - StreetTalk
8 - Environment
9 - NetBios
10 - Secondary 3270 Emulation ID
11 - Semaphore
12 - 3270 Emulation Active Status
13 - 3270 Keyboard Interrupt Simulator
14 - Advanced 3270 SNA
15 - UnDocumented
16 - UnDocumented
Return Codes:
0 - Service is Installed
1 - Service is not Installed
2 - Invalid Service Number
02-04-92
New Novell Goodies:
NovCaptureSetup (Port) : String
NovCaptureSetup can read or set the setup string for a print queue.
Example:
NovCaptureSetup (1) = Esc + char($15)
Writeln NovCaptureSetup (1) ;reads the capture setup string
NovCaptureReset (Port) : String
NovCaptureReset can read or set the reset string for a print queue.
Example:
NovCaptureReset (1) = Esc + char($15)
Writeln NovCaptureReset (1) ;reads the capture setup string
Nil
Nil returns a zero or empty value for any type data. As a boolean Nil
returns False. As a number Nil returns 0. As a string, Nil returns an
empty string.
===============================================================
Version 2.37
02-27-92
Digital Research (Novell) has published it's API programmers interface
into it's TaskMax task switcher. And I have added these features to
MarxMenu. MarxMenu can now totally control the TaskMax interface and
replace the TaskMax popup menu with a write your own interface MarxMenu
system.
I want to make the comment that this interface is an example of a
programmers interface done right. It took me only a few hours to
interface into every significant routine that DR offered. The interface
was simple and straight forward and easy to program for and I want to
thank DRI for doing it right.
For those of you out there who might now ask me about a Windows version
the answer is still no. The reason being that Windows is a programmers
nightmare and a support nightmare. I think windows is a mistake and a
mistake that I'm not going to support. Those vendors who have been
pressured into comming out with Windows versions of their product have
had their DOS products freeze in time. It is my position that DOS comes
first and as long as DOS is the #1 operating system sold and continues
to outsell Windows by 10 to 1 I will stay committed do DOS products.
I personally am using MS-DOS 5 on my workstations because my current
copy of DR 6 (and I have the December-91 update) has a number of bigs.
One of these is slow floppy disk problem and since I'm in the software
producing business and produce a lot of floppies it's an issue for me. I
am hoping that Digital Research gets this and other bugs fixed so that I
can switch.
Having gotten that off my chest, here's the new features:
I have written a quite elaborate sample menu TMAX.MNU that demonstrates
the power of these new features. Anyone wanting to do serious work with
this should look at this sample first.
TMaxInstalled : Boolean
This function returns true if TaskMax is installed. Any other TaskMax
command produces a run-time error if used when TaskMax is not installed.
TMaxResult : Number
TMaxResult is a variable containing return information that other TMax
command return or the result status of a TMax command.
TMaxCreateTask (command string)
TMaxCreateTask creates a new task and executes it. You pas it a command
line just like you would use the Execute program. Like the execute
program, if you use the COM or EXE extension then you won't load a
secondary command.com and save yourself 5k of memory and gain some
speed. When the program exits that task is cleared.
Example:
TMaxCreateTask 'DIR *.*'
TMaxSwitchTasks (TaskID)
Switches the current task out and selects the task identified be TaskID.
TMaxDeleteTask (TaskID)
Kills the task identified by TaskID.
TMaxMaxTasks : Number
Returns the total number of tasks allowed by TaskMax.
TMaxActiveTasks : Number
Returns the number of active tasks.
TMaxDirectSwitching (On/Off)
Turns on or off the ability to use the direct switch keys without going
through the task manager menu.
TMaxEMSMemLim (Number)
This is a variable that can be either read or set to the maximum number
of bytes of EMS memory that each task can have. This prevents one task
from hogging up all the EMS. Setting this to 0 disables limiting.
Example:
TMaxEMSMemLim = 2000000 ;2 megs per task
Writeln TMaxEMSLim
TMaxReadTaskInfo (2D Array)
Reads the task information table into a 2 dimensional array where the
first field is the task name and the second field is the TaskId number.
The TaskID number is used by all TMax commands that act on a single task
(TMaxDelete, TMaxSwitchTasks ... ).
Example:
var Tasks
TMaxReadTaskInfo(Tasks)
Loop Tasks
Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
EndLoop
TMaxSwitchToManager
This command brings up the task manager the same way as if you had
pressed the hot key.
TMaxTakeOver (On/Off)
This allows you MarxMenu program to become the task manager menu. When
the user presses the hot key to pop up the task switching menu it will
pop up your MarxMenu program instead. You can disable this by setting it
to off.
TMaxThisTask : Number
Returns the TaskID of the current task.
TMaxVersion : Number
Returns the version number of TaskMax.
TMaxReturnCount
This variable sets the number of timer ticks (18.2 ticks per second)
that TMaxCreateTask will execute a program before returning to the
original program. If it is set to 0 it will stay in the original
program. By setting TMaxReturnCount to a number other than 0 you can run
a program for a few seconds and come back. This is used to preload tasks
that you might later want to switch to.
Example:
TMaxReturnCount = 27 ;1.5 Seconds
TMaxCreateTask 'DM3.EXE' ;load a file manager
TMaxReturnCount = 0 ;set back to 0 for normal usage
TMaxTaskOpenFiles (TadkID) : Number
Returns the number of open files a task has. You may want to test to see
if a task that open files before deleting the task.
TMaxCut (TaskID)
Activates TaskMax data cutting function.
TMaxPaste (TaskID)
Activates TaskMax data pasting function.
TMaxGetPasteBuffer (Array)
Reads the TaskMax paste buffer into and array of strings.
TMaxSetPasteBuffer (Array)
Sets the TaskMax paste buffer to the strings in array.
Other Features:
PickManyPositions (Array)
After running PickMany and array PickManyPositions is created the has
the position numbers in the original array that were chosen.